Method, device, and program product for managing storage pool of storage system

ABSTRACT

Storage devices in a pool are divided into at least one group with a first number of storage devices in an existing group not higher than a range. When a second number of storage devices are added to the resource pool, a sum of the first number and the second number is determined. A new group is created based on at least a portion of the second number of storage devices when the sum does not satisfy the range; and another portion of the second number of storage devices are added to the existing group. A first storage space portion in each of a set of shared storage devices selected from the existing group is allocated to the existing group, and a second storage space portion in each of the set of shared storage devices is allocated to the new group. The storage space utilization rate can be increased.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims priority to Chinese Patent Application No.CN202011308120.X, on file at the China National Intellectual PropertyAdministration (CNIPA), having a filing date of Nov. 20, 2020, andhaving “METHOD, DEVICE, AND PROGRAM PRODUCT FOR MANAGING STORAGE POOL OFSTORAGE SYSTEM” as a title, the contents and teachings of which areherein incorporated by reference in their entirety.

TECHNICAL FIELD

The implementations of the present disclosure relate to storagemanagement, and more particularly, relate to a method, a device, and acomputer program product for managing a storage resource pool (referredto as a resource pool) of a storage system.

BACKGROUND

With the development of data storage technologies, various data storagedevices have been able to provide users with increasingly high datastorage capacities, and the speed of data access has also been greatlyimproved. Along with the increase in data storage capacity, users alsoplace increasingly high demands on data reliability and scalability ofstorage systems. At present, various data storage systems based onRedundant Array of Independent Disks (RAID) have been developed toimprove data reliability. When one or more disks in a storage systemmalfunction, data in the malfunctioning disks can be reconstructed fromdata on other normally operating disks.

Mapped RAID has been developed at present. In this mapped RAID, disk isa logical concept and may include multiple extents. Multiple extentsincluded in a logical disk can be distributed across different physicalstorage devices in a resource pool. For a plurality of extents in onestripe of the mapped RAID, the plurality of extents should bedistributed on different physical storage devices, so that when aphysical storage device where one of the plurality of extents is locatedfails, a reconstruction operation may be performed to recover data fromphysical storage devices where other extents are located.

To facilitate the management of multiple storage devices in a resourcepool, the multiple storage devices can be divided into at least onegroup in accordance with a group threshold range (including an upperlimit threshold and a lower limit threshold), and a user storage systemcan be created based on multiple storage devices in each group. Here,the number of storage devices in each group satisfies the groupthreshold range. During the operation of the storage system, new storagedevices can be added to the resource pool. In some cases, the storagedevices in the resource pool cannot be divided into groups that satisfythe above threshold range, then at this moment no newly added storagedevice can be added to the groups. At this moment, how to use thestorage space in the newly added storage device as effectively aspossible becomes a technical problem.

SUMMARY OF THE INVENTION

Therefore, it is expected to develop and implement a technical solutionto manage multiple storage devices in a resource pool in a moreefficient manner. It is desirable that the technical solution iscompatible with existing storage systems, and by modifying variousconfigurations of existing storage systems, the storage systems may bemanaged in a more effective manner.

According to a first aspect of the present disclosure, a method formanaging a resource pool of a storage system is provided. The resourcepool includes multiple storage devices which are divided into at leastone group with a first number of storage devices in an existing group ofthe at least one group not higher than an upper limit threshold of agroup threshold range. In this method, according to a determination thata second number of storage devices are added to the resource pool, a sumof the first number and the second number is determined. A new group iscreated based on at least a portion of the second number of storagedevices according to a determination that the sum of the first numberand the second number does not satisfy the group threshold range; andanother portion of the second number of storage devices are added to theexisting group. A first portion of storage space in each of a set ofshared storage devices selected from the existing group is allocated tothe existing group, and a second portion of storage space in each of theset of shared storage devices is allocated to the new group.

According to a second aspect of the present disclosure, an electronicdevice is provided. The electronic device includes at least oneprocessor; and a memory coupled to the at least one processor, whereinthe memory has instructions stored therein which, when executed by theat least one processor, cause the device to perform the method accordingto the first aspect of the present disclosure.

According to a third aspect of the present disclosure, a computerprogram product is provided, which is tangibly stored on anon-transitory computer-readable medium and includes machine-executableinstructions, wherein the machine-executable instructions are used forperforming the method according to the first aspect of the presentdisclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The features, advantages, and other aspects of respectiveimplementations of the present disclosure will become more apparent fromthe following detailed description and in conjunction with theaccompanying drawings. Certain implementations of the present disclosureare shown herein by way of example and not limitation. In theaccompanying drawings:

FIG. 1 schematically illustrates a schematic diagram of a storage systemin which the implementations of the present disclosure may beimplemented;

FIG. 2 schematically illustrates a block diagram of a process formanaging a resource pool of a storage system according to animplementation of the present disclosure;

FIG. 3 schematically illustrates a flow chart of a method for managing aresource pool of a storage system according to an implementation of thepresent disclosure;

FIG. 4 schematically illustrates a flow chart of a method fordetermining a set of shared storage devices according to animplementation of the present disclosure;

FIG. 5 schematically illustrates a block diagram of a process for addingmore storage devices to a resource pool according to an implementationof the present disclosure;

FIG. 6 schematically illustrates a flow chart of a method for releasingshared storage devices according to an implementation of the presentdisclosure;

FIG. 7 schematically illustrates a block diagram of a process forselecting, from a set of shared storage devices, shared storage devicesto be released, according to an implementation of the presentdisclosure;

FIG. 8 schematically illustrates a block diagram of a process formigrating data from a to-be-released shared storage device according toan implementation of the present disclosure; and

FIG. 9 schematically illustrates a block diagram of a device formanaging a resource pool of a storage system according to an exampleimplementation of the present disclosure.

DETAILED DESCRIPTION

The individual features of the various embodiments, examples, andimplementations disclosed within this document can be combined in anydesired manner that makes technological sense. Furthermore, theindividual features are hereby combined in this manner to form allpossible combinations, permutations and variants except to the extentthat such combinations, permutations and/or variants have beenexplicitly excluded or are impractical. Support for such combinations,permutations and variants is considered to exist within this document.

It should be understood that the specialized circuitry that performs oneor more of the various operations disclosed herein may be formed by oneor more processors operating in accordance with specialized instructionspersistently stored in memory. Such components may be arranged in avariety of ways such as tightly coupled with each other (e.g., where thecomponents electronically communicate over a computer bus), distributedamong different locations (e.g., where the components electronicallycommunicate over a computer network), combinations thereof, and so on.

In the following, preferred implementations of the present disclosurewill be described in more detail with reference to the accompanyingdrawings. Although the preferred implementations of the presentdisclosure are shown in the accompanying drawings, it should beunderstood that the present disclosure may be implemented in variousforms and should not be limited by the implementations set forth herein.Rather, these implementations are provided so that the presentdisclosure will be more thorough and complete, and the scope of thepresent disclosure can be fully conveyed to those skilled in the art.

As used herein, the term “including” and variations thereof meanopen-ended inclusion, that is, “including but not limited to.” Unlessspecifically stated, the term “or” means “and/or.” The term “based on”means “based at least in part on.” The terms “one exampleimplementation” and “one implementation” mean “at least one exampleimplementation.” The term “another implementation” means “at least onefurther implementation.” The terms “first,” “second,” etc. may refer todifferent or the same objects. Other explicit and implicit definitionsmay also be included below.

In the context of the present disclosure, a storage system may be aRAID-based storage system. The RAID-based storage system may combinemultiple storage devices into one disk array. By providing redundantstorage devices, the reliability of the entire disk group may greatlyexceed that of a single storage device. RAID may provide variousadvantages over a single storage device, such as enhanced dataintegration, enhanced fault tolerance, increased throughput or capacity,and so on. There are a number of RAID standards, for example, RAID-1,RAID-2, RAID-3, RAID-4, RAID-5, RAID-6, RAID-10, RAID-50, and so on.

Firstly, an application environment according to an exampleimplementation of the present disclosure will be described withreference to FIG. 1. FIG. 1 schematically illustrates a schematicdiagram of storage system 100 in which the implementations of thepresent disclosure may be implemented. As shown in FIG. 1, storagesystem 100 may include resource pool 110 which may include multiplestorage devices. To facilitate management, the multiple storage devicescan be divided into one or more groups. For example, storage devices122, . . . , 124, . . . , and 126 may be grouped into group 120, andstorage devices 132, . . . , 134, . . . , and 136 may be grouped intogroup 130. Based on the mapped RAID technology, the storage space ineach storage device in one group may be used to create a user storagesystem. For example, user storage systems 140, . . . , and 142 may becreated based on the storage space in group 120, respectively.

Here, a group threshold range can be set for the number of storagedevices included in the group. For example, the group threshold rangemay include an upper limit threshold (denoted as TH_(high)) forspecifying an upper limit on the number of storage devices in the group;and the group threshold range may include a lower limit threshold(denoted as TH_(low)) for specifying a lower limit on the number ofstorage devices in the group. In general, the upper limit threshold maybe set to 64 or some other values; and the lower limit threshold may bedetermined based on the stripe width of the storage system and thenumber of backup storage devices required. For example, in a 4D+1Pstorage system with the stripe width of 4+1=5 and the number of backupstorage devices of 1, the lower limit threshold can be determined basedon the sum of the two: 5+1=6. At this moment, each group may includefrom 6 to 64 storage devices. When the number of storage devicesincluded in resource pool 110 exceeds 64, multiple groups may exist.

It will be understood that the number of storage devices in only onegroup in resource pool 110 is less than (or equal to) the upper limitthreshold, while the number of storage devices in one or more othergroups should be equal to the upper limit threshold. When adding morenew storage devices to the resource pool, the new storage devices arefirst added to the group (if present) with the number less than theupper limit threshold, so as to reach the upper limit threshold. Ifthere are still more new storage devices, a new group is created. Basedon the above description, it can be seen that the resource pool mayaccommodate 6 to 64 storage devices when it includes 1 group, 72 to 128storage devices when it includes 2 groups, and (N−1)*64+6 to N*64storage devices when it includes N groups.

It will be understood that the above ranges are not continuous, whichresults in the possibility of under-utilizing new storage devices whenadding them to resource pool 110. For example, assuming that theresource pool includes 1 group, and this group includes 62 storagedevices. When 5 storage devices are added to the resource pool, 4 of the5 storage devices can be added to the existing group, and the other5−4=1 storage device is used to create a new group. Since the number ofstorage devices in the new group is 1 (1<6) and does not satisfy thelower limit threshold, the storage space of the 1 storage device in thenew group cannot be utilized at this moment. Therefore, it is expectedto provide a more effective way to manage the storage devices in theresource pool to make use of the storage space in all the storagedevices as fully as possible.

In order to at least partially address the deficiencies in the abovetechnical solution, a technical solution for managing a resource pool ofa storage system is provided according to example implementations of thepresent disclosure. Hereinafter, a process according to an exampleimplementation of the present disclosure will be described in generalwith reference to FIG. 2. FIG. 2 schematically illustrates a blockdiagram of process 200 for managing a resource pool of a storage systemaccording to an implementation of the present disclosure. According toan example implementation of the present disclosure, a concept of“shared storage device” is proposed, wherein the shared storage devicerepresents a storage device that is shared between two groups. There maybe one or more shared storage devices, and the storage space of eachshared storage device may be divided into two portions with one portionused for an existing group and the other portion used for a new group.

As shown in FIG. 2, assuming that group 130 includes 63 storage devices132, . . . , 134, and 136, and that 4 storage devices 212 to 214 areadded to the resource pool to form groups 130 and 210, then a set ofshared storage devices 220 (including storage devices 134, . . . , and136) can be determined. Specifically, new group 210 may be created basedon 3 storage devices 212 to 214, and a portion (e.g., 50%) of storagespace of 3 storage devices 134, . . . , and 136 in existing group 130 isborrowed. At this moment, group 130 includes all of the storage space instorage device 132, etc., and 50% of the storage space in storagedevices 134, . . . , 136, and 212, and new group 210 includes the other50% of the storage space in storage devices 134, . . . , 136, and 212and all of the storage space in storage device 214, etc. At this moment,the number of storage devices in group 130 satisfies upper limitthreshold 230, and the number of storage devices in group 210 satisfieslower limit threshold 240.

With the example implementation of the present disclosure, although thestorage space in one shared storage device and used for each group isless than all the storage space, the shared storage device can allow thenumber of storage devices in each group to satisfy both the upper andlower limit threshold requirements, thereby making full use of thestorage devices in the newly added storage devices. It will beunderstood that FIG. 2 above only schematically illustrates an exampleof a set of shared storage devices 220. Depending on the number ofstorage devices in the existing group and the number of the newly addedstorage devices, there will be different scenarios. This will bedescribed in detail below.

FIG. 3 schematically illustrates a flow chart of method 300 for managinga resource pool of a storage system according to an implementation ofthe present disclosure. Method 300 may be implemented at an electronicdevice with computing capability in storage system 100. Here, resourcepool 110 of storage system 100 includes multiple storage devices whichare divided into at least one group. The first number (denoted asCNT_(old)) of storage devices in one group (e.g., the last group) of theat least one group is not higher than an upper limit threshold of agroup threshold range, and the numbers of storage devices in groupsother than that group of the at least one group are equal to the upperlimit threshold, respectively. In other words, the groups are divided inaccordance with the predetermined upper limit threshold, and at mostonly the number of storage devices in the last group is less than (orequal to) the upper limit threshold. If the numbers of storage devicesin all the groups are equal to the upper limit threshold, any one of thegroups can be regarded as the last group.

According to an example implementation of the present disclosure, thelast group (referred to as an existing group) in which the number ofstorage devices included is less than the upper limit threshold can befound first, and one or more storage devices can be added to theexisting group. If the number of storage devices in the existing groupreaches the upper limit threshold, a new group can be created and one ormore shared storage devices can be determined from the existing group.It will be understood that if the numbers of storage devices in all thegroups are equal to the upper limit threshold, a new group can becreated and one or more shared storage devices can be determined fromany of existing groups.

At block 310, according to a determination that a second number (denotedas CNT_(add)) of storage devices are added to the resource pool, a sumof the first number CNT_(old) and the second number CNT_(add) isdetermined. It will be understood that the sum of the first number andthe second number represents the number of storage devices that have notyet formed regular groups. If this number satisfies the group thresholdrange, zero to more storage devices of the second number of storagedevices can be directly added to an existing group. If there areremaining storage devices, a new group can be created based on theremaining storage devices. At this moment, the number of storage devicesin the new group will be higher than or equal to the lower limitthreshold, and thus all storage space in the newly added second numberof storage devices can be fully utilized.

At block 320, a new group is created based on at least a portion of thesecond number of storage devices according to a determination that thesum of the first number and the second number does not satisfy the groupthreshold range. At block 330, another portion of the second number ofstorage devices are added to the existing group. For ease ofdescription, the number of storage devices added to the existing groupamong the second number of storage devices can be denoted asCNT_(add,old) and the number of storage devices added to the new groupamong the second number of storage devices can be denoted asCNT_(add,new).

According to an example implementation of the present disclosure, whenthe sum of the first number and the second number does not satisfy thegroup threshold range, it will result in a situation where it isimpossible to fully utilize all the storage space in accordance withconventional technical solutions. At this moment, a new group can becreated and a portion of storage space in a set of shared storagedevices can be “borrowed” from the existing group. According to anexample implementation of the present disclosure, the numbersCNT_(add,old) and CNT_(add,new) of storage devices to be added to theexisting group and the new group may first be determined. The numberCNT_(add,old) of storage devices to be added to the existing group canbe determined based on Formula 1, and the number CNT_(add,new) ofstorage devices to be added to the new group can be determined based onFormula 2:

CNT _(add,old) =TH _(high) −CNT _(old)   Formula 1

CNT _(add,new) =CNT _(add) −CNT _(add,old)   Formula 2

where TH_(high) denotes the upper limit threshold, TH_(low) denotes thelower limit threshold, CNT_(old) denotes the first number, CNT_(add)denotes the second number, CNT_(add,old) denotes the number of storagedevices added to the existing group among the second number of storagedevices, and CNT_(add,new) denotes the number of storage devices addedto the new group among the second number of storage devices.

Assuming that the existing group includes 62 storage devices, and 6storage devices are newly added, then 62+6=68 (not satisfying the groupthreshold range). At this moment, 64−62=2 storage devices can be addedto the existing group, and 6−2=4 storage devices can be added to the newgroup. Assuming that the existing group includes 60 storage devices, and7 storage devices are newly added, then 60+7=67. At this moment, 64−60=4storage devices can be added to the existing group, and 7−4=3 storagedevices can be added to the new group. In the above two examples, sincethe storage devices in the new group have not yet reached the lowerlimit threshold, the new group can share one or more storage deviceswith the existing group.

At block 340, a first portion of storage space in each of a set ofshared storage devices selected from the existing group is allocated tothe existing group, and a second portion of storage space in each of theset of shared storage devices is allocated to the new group. Here, theset of shared storage devices can be first determined from the existinggroup. According to an example implementation of the present disclosure,the set of shared storage devices (the number of the set of sharedstorage devices is denoted as CNT_(share)) can be selected based on thesecond number and the lower limit threshold.

Hereinafter, how to select a set of shared storage devices will bedescribed in detail with reference to FIG. 4. FIG. 4 schematicallyillustrates a flow chart of method 400 for determining a set of sharedstorage devices according to an implementation of the presentdisclosure. Specifically, at block 410, the second number CNT_(add)(CNT_(add)=CNT_(add,new)+CNT_(add,old)) may be compared with the lowerlimit threshold TH_(low). If the second number is not lower than thelower limit threshold of the group threshold range, it means that thenumber of the newly added storage devices already satisfies the lowerlimit threshold. At this moment, method 400 proceeds to block 412, and(TH_(low)−CNT_(add,new)) storage devices in the CNT_(add,old) storagedevices may be marked as shared storage devices. Specifically, a set ofshared storage devices can be selected from another portion of storagedevices added to the existing group (that is, CNT_(add,old) storagedevices added to the existing group), and the number of the selectedshared storage devices is TH_(low)−CNT_(add,new).

It will be understood that the shared storage devices will be used bytwo groups, which will cause the workloads of the shared storage devicesto become high, and therefore, it is necessary to select storage deviceswith the lowest current workload as the shared storage devices. Sincethe CNT_(add,old) storage devices newly added to the existing group havenot been used yet, when selecting shared storage devices from thesestorage devices, storage devices with the lowest workload and bestperformance can be preferentially selected as the shared storagedevices. In this way, the problem of high workloads of the sharedstorage devices can be alleviated, thereby improving the performance ofthe entire storage system.

In an example, assuming that the existing group includes 60 storagedevices and 7 storage devices are newly added, thenCNT_(add,old)=64−60=4 storage devices can be added to the existinggroup, and CNT_(add,new)7−4=3 storage devices can be added to the newgroup. At this moment, the second number (CNT_(add)=7) is higher thanthe lower limit threshold (TH_(low)=6). Therefore, the shared storagedevices can be selected from the 4 newly added storage devices in theexisting group. Specifically, the number of the shared storage devicescan be determined based on a difference between the lower limitthreshold TH_(low) and the number CNT_(add,new) of storage devices inthe new group: TH_(low)−CNT_(add,new)=6−3=3. In other words, 3 storagedevices can be selected from the 4 newly added storage devices in theexisting group as the shared storage devices.

According to an example implementation of the present disclosure, if thesecond number is lower than the lower limit threshold of the groupthreshold range, this means that the newly added second number ofstorage devices are not sufficient to construct a group, and one or morestorage devices need to be “borrowed” from the initial storage devicesin the existing group. In other words, the set of shared storage devicescan be selected from the another portion of storage devices added to theexisting group and the first number of storage devices. At this moment,the result of determination at block 410 is “No,” and method 400proceeds to block 420. Since the newly added CNT_(add,old) storagedevices have not been used yet and have the lowest workload, at block420, CNT_(add,old) storage devices may be first marked as shared storagedevices. In an example, assuming that the existing group includes 60storage devices and 5 storage devices are newly added, thenCNT_(add,old)=64−60=4 storage devices can be added to the existinggroup, and CNT_(add,new)5−4=1 storage device can be added to the newgroup. At this moment, the second number (CNT_(add)=5) is lower than thelower limit threshold (TH_(low)=6). Therefore, 4 newly added storagedevices in the existing group can be selected as shared storage devices.

According to an example implementation of the present disclosure, atarget number of shared storage devices in the set of shared storagedevices and from the first number of storage devices can be determinedbased on the first number, the second number, and the group thresholdrange. The numbers CNT_(add,old) and CNT_(add,new) of storage devicesadded to the existing group and the new group, respectively, may firstbe determined according to the method described above. Afterwards, adesired number CNT_(share) of shared storage devices can be determined,and how many shared storage devices to be selected from the first numberof storage devices can be determined based on a difference between thisdesired number and the current number of the set of shared storagedevices. According to an example implementation of the presentdisclosure, how many shared storage devices to be selected from thefirst number of storage devices can be determined based onTH_(low)−CNT_(add,new)−CNT_(add,old).

Specifically, the desired number of the shared storage devices can bedetermined based on a difference between the lower limit thresholdTH_(low) and the number CNT_(add,new) of storage devices in the newgroup: CNT_(share)=TH_(low)−CNT_(add,new)=6−1=5. In other words, sincethe new group includes only 1 storage device at this moment, 5 moreshared storage devices are needed to reach the lower limit threshold. 4shared storage devices have already been selected above, so it isnecessary to further select 5−4=1 shared storage device from the firstnumber of storage devices in the existing group. In other words, it isnecessary to further select 1 storage device from the initial 60 storagedevices in the existing group. According to an example implementation ofthe present disclosure, in order to ensure that the shared storagedevices can cope with a relatively high workload, a storage device withthe lowest workload can be selected from the initial 60 storage devicesin the existing group. According to an example implementation of thepresent disclosure, at least one storage device satisfying the targetnumber can be selected from the first number of storage devices based onthe workload of each of the first number of storage devices.

At this moment, method 400 proceeds to block 430 and determines theworkload of each initial storage device in the existing group. Theworkload of each storage device can be determined based on multiplefactors. For example, the state of storage space in the storage device,the distribution of stripes where the extents in the storage device arelocated, the frequency at which data in the storage device is accessed,the wear degree of the storage device, and the like can be taken intoconsideration. It will be understood that since the shared storagedevices will serve two groups, storage devices with lower workloads canbe preferentially selected as the shared storage devices. For example,the workloads of the initial 60 storage devices in the existing groupcan be ordered, and the group with the lowest workload can be selectedas the shared storage devices. At block 440,TH_(low)−CNT_(add,new)−CNT_(add,old) storage devices can be marked asshared storage devices according to the workload of each storage device.

According to an example implementation of the present disclosure, thestorage space in a shared storage device may be divided into twoportions, and the two portions of storage space may be allocated to theexisting group and the new group, respectively. For example, it can bedivided in accordance with a ratio of 1:1 (or some other ratios). If theusage rate of the selected shared storage device exceeds a thresholdproportion (e.g., 50%), i.e., the result of determination is “Yes” atblock 450, then method 400 proceeds to block 460 to perform datamigration. In other words, data in the selected shared storage devicemay be migrated to another storage device in the first number of storagedevices. If the result of determination at block 450 is “No,” method 400directly proceeds to 470.

At block 470, the first portion of storage space in the shared storagedevice is allocated to the existing group, and the second portion ofstorage space in the shared storage device is allocated to the newgroup. It will be understood that at this moment, the idle storage spacein the shared storage device will reach 50%, and thus the second portionof storage space for allocation to the new group can be determined fromthe idle space in the shared storage device, and the first portion ofstorage space can be determined from storage space other than the secondportion of storage space in this storage device. For example, 50% of theidle space can be allocated to the new group, and the remaining storagespace can be allocated to the existing group. Address mapping of thecorresponding group may be updated based on the allocated storage space.For example, the address mapping of the existing group may be updatedbased on the first portion of storage space, and the address mapping ofthe new group may be updated based on the second portion of storagespace.

Blocks 410 to 470 in FIG. 4 illustrate the steps of determining one ormore shared storage devices and allocating the storage space in theshared storage devices to the existing group and the new group,respectively. At this moment, the existing group and the new group mayenter a stable working state. With the operation of the storage system,there may be a difference between the workloads of various storagedevices, and thus a load balancing process can be performed at block480. With the example implementation of the present disclosure, afterstorage devices have been added to the resource pool, one or morestorage devices may be shared between the existing group and the newgroup if the number of storage devices in the resource pool does notsatisfy the group threshold range. In this way, the storage space in thenewly added storage devices can be utilized as much as possible.

With the operation of the storage system, storage devices can becontinuously added to the resource pool, so the number of storagedevices in the resource pool will change. At this moment, a portion orall of the shared storage devices can be released, that is, data in aportion or all of the shared storage devices can be migrated to thenewly added storage devices. Hereinafter, the case of adding storagedevices again will be described with reference to FIG. 5. FIG. 5schematically illustrates a block diagram of process 500 for adding morestorage devices to a resource pool according to an implementation of thepresent disclosure. Storage devices 134, . . . , 136, and 212 shown inshading in FIG. 5 represent a set of shared storage devices 220 beforethe further addition. Storage device 510 can be added to the resourcepool. At this moment, storage device 510 can be added to the new groupto form new group 520, and one shared storage device (for example,storage device 134) can be released.

Specifically, data in the second portion of storage space in storagedevice 134 can be migrated to storage device 510, and all the storagespace in storage device 134 can be allocated to existing group 130. Atthis moment, a set of shared storage devices 530 may include storagedevices 136, 212, etc., and the numbers of storage devices in groups 130and 520 both satisfy upper limit threshold 230 and lower limit threshold240.

According to an example implementation of the present disclosure, thethird number can be compared with a difference between the upper limitthreshold and the number of storage devices in the new group. If it isdetermined that the third number (denoted as CNT_(add2)) is higher thanthe difference, only a portion of the third number of storage devicescan be added to the new group based on the upper limit threshold. Atthis moment, all the shared storage devices can be released, and a newgroup can be created based on the remaining storage devices. If thenumber of the remaining storage devices satisfies the group thresholdrange, a new group can be created in accordance with conventionaltechnical solutions. If the number of the remaining storage devices doesnot satisfy the group threshold range, a new group can be created inaccordance with method 300 described above.

According to an example implementation of the present disclosure, adifference between the upper limit threshold and the number of storagedevices in the new group may be determined, and the third number may becompared with this difference. If the third number is not higher thanthe difference, the third number of storage devices can be added to thenew group, and at this moment the number of storage devices in the newgroup will not exceed the upper limit threshold.

According to an example implementation of the present disclosure,subsequent steps can be determined based on whether the current set ofshared storage devices is empty. If the set of shared storage devices isempty (i.e., there are no shared storage devices at this moment), theprocessing can be performed in accordance with solutions in the priorart or method 300 described above. If the set of shared storage devicesis non-empty (i.e., there are one or more shared storage devices), thenumber of the set of shared storage devices can be compared with thethird number, so as to migrate data in at least a portion of sharedstorage devices in the set of shared storage devices to the third numberof storage devices. If the number of the set of shared storage devicesis higher than the third number, only the third number of storagedevices can be used to replace a portion of shared storage devices. Ifthe number of the set of shared storage devices is not higher than thethird number, the third number of storage devices can be used to replaceall of the shared storage devices.

Hereinafter, more details about releasing shared storage devices will bedescribed with reference to FIG. 6. FIG. 6 schematically illustrates aflow chart of method 600 for releasing shared storage devices accordingto an implementation of the present disclosure. If the result ofdetermination at block 610 is no, it means that there is no sharedstorage device. At this moment, the groups are all in a stable workingstate, and method 600 directly proceeds to block 670. If the result ofdetermination at block 610 is yes, method 600 proceeds to block 620 tocompare the number CNT_(share) of the set of shared storage devices withthe third number CNT_(add2) of the newly added storage devices.

At block 620, if the result of determination is no, it means that all ofthe shared storage devices can be released. In other words, the data inthe “borrowed” portion of all the shared storage devices can be migratedto the newly added storage devices in the new group. Method 600 proceedsto block 622 to migrate the data in the second portion of all the sharedstorage devices to the newly added storage devices. Specifically, atleast one storage device may be selected from the third number ofstorage devices, wherein the number of the at least one storage deviceis equal to the number of the set of shared storage devices. Assumingthat the current set of storage devices includes 5 storage devices, and6 storage devices are added to the new group. Any 5 storage devices canbe selected from the 6 storage devices as the migration destination.Further, the data in the second portion of the 5 shared storage devicescan be migrated to the selected 5 storage devices, respectively.

At block 620, if the result of determination is yes, it means that onlya portion of the shared storage devices can be released. At this moment,method 600 proceeds to block 630 to select a subset of shared storagedevices from the set of shared storage devices. It will be understoodthat, since the shared storage devices have high workloads, in order toavoid bottlenecks caused by excessive workloads, one or more sharedstorage devices with the highest workloads can be preferentiallyreleased. At block 630, the workload of each shared storage device maybe determined.

Hereinafter, the process of determining shared storage devices to bereleased will be described with reference to FIG. 7. FIG. 7schematically illustrates a block diagram of process 700 for selecting,from a set of shared storage devices, shared storage devices to bereleased according to an implementation of the present disclosure. Asshown in FIG. 7, for each of storage devices 134, . . . , 136, and 212in the set of shared storage devices 220, a corresponding workload 710,. . . 712, and 714 can be determined. Workloads can be determined herebased on the aspects described above to find the storage devices withthe highest workload. Assuming that workload 710 is higher than theworkloads of other storage devices, data in storage device 134 may beselected to be migrated.

According to an example implementation of the present disclosure,CNT_(add2) storage devices may be selected to be released. Returning toFIG. 6, at block 640, CNT_(add2) shared storage devices with the highestworkload can be selected. At this moment, the number of shared storagedevices in the selected subset is equal to CNT_(add2). Continuing withthe example above. Assuming that the existing group includes 60 storagedevices and 5 storage devices are newly added at the first time, thenCNT_(add,old)=64−60=4 storage devices are added to the existing group,and CNT_(add,new)5−4=1 storage device is added to the new group. At thismoment, the set of shared storage devices includes 5 storage devices(wherein 4 storage devices are newly-added storage devices, and 1storage device is one of the initial 60 storage devices). Assuming that4 storage devices are newly added at the second time, the number 4 ofthe newly added storage devices is less than the number 5 of the set ofshared storage devices, and at this moment, 4 storage devices can beselected from the set of storage devices as the subset.

According to an example implementation of the present disclosure, theworkload of each of the set of shared storage devices can be determined,and the subset can be selected from the set of shared storage devices inaccordance with the workload. The storage device with the highestworkload can be selected preferentially for data migration. Continuingwith the example above. The current set of shared storage devicesincludes 5 storage devices, wherein 1 storage device comes from theinitial 60 storage devices in the existing group. Since this storagedevice has a long use time and contains more data, it can bepreferentially added to the subset. Further, 3 storage devices with highworkloads can be selected from the remaining 4 storage devices in theset of shared storage devices, so as to be added to the subset.

At block 650, data in the second portion in the selected shared storagedevices may be migrated to the newly added storage devices. Hereinafter,more details about the migration will be described with reference toFIG. 8. FIG. 8 schematically illustrates a block diagram of process 800for migrating data from a to-be-released shared storage device accordingto an implementation of the present disclosure. As shown in FIG. 8,storage device 134 to be released may include first portion 810 andsecond portion 812, wherein first portion 810 is allocated to theexisting group, and second portion 812 is allocated to the new group.The data in second portion 812 can be migrated to the newly addedstorage device 510. Specifically, data in the second portion of eachshared storage device in the selected subset can be migrated to thethird number of storage devices. In other words, the data in the storagespace of the 4 shared storage devices that is allocated to the new groupcan be migrated to the newly added 4 storage devices, respectively.

It will be understood that, here, only the data in the second portion inthe shared storage devices (that is, the storage space allocated to thenew group) is migrated. The first portion of the storage space stillbelongs to the existing group. After the data migration has beencompleted, all the storage space in the shared storage devices willbelong to the existing group. At this moment, the address mapping of thegroup can be updated so that the group includes all the storage space ofeach shared storage device in the subset. Further, the shared storagedevices in the subset may be removed from the set of shared storagedevices. Each shared storage device that has completed data migrationcan be removed one by one from the set of shared storage devices. Afterdata migration from the 4 shared storage devices has completed, the setof shared storage devices only includes 5−4=1 shared storage device.After the migration, the data in the second portion is no longer useful.Therefore, as shown in block 660 of FIG. 6, the second portion ofstorage space in the storage device can be released. At this moment, allthe storage space in storage device 134 will belong to the existinggroup.

The process of releasing shared storage devices has been described indetail above. In the releasing process, the data in the storage space inthe shared storage devices that is allocated to the new group can bemigrated to the newly added storage devices in the new group. In thisway, each storage device in the existing group will gradually recover tothe state of only serving one group.

At block 670, a load balancing process may be performed. In other words,if it is found that the workloads of the storage devices in a certaingroup are unbalanced, the load balancing process can be performed acrossmultiple storage devices in the group. For example, the load balancingprocess can be performed in the existing group, the load balancingprocess can be performed in the new group, or the load balancing processcan be performed in both the existing group and the new group. The loadbalancing process here may involve many factors, for example, the usagerate of the storage space in the storage device, the frequency withwhich the data in the storage device is accessed, the wear degree of thestorage device, and the like, can be balanced. In this way, theworkloads of the storage devices can be balanced, thus improving theperformance and response speed of the storage system.

Examples of the method according to the present disclosure have beendescribed in detail above with reference to FIGS. 2 to 8, andimplementations of a corresponding apparatus will be described below.According to an example implementation of the present disclosure, anapparatus for managing a resource pool of a storage system is provided.Here, the resource pool includes multiple storage devices which aredivided into at least one group with a first number of storage devicesin an existing group of the at least one group not higher than an upperlimit threshold of a group threshold range. The apparatus includes: adetermining module configured to determine, according to a determinationthat a second number of storage devices are added to the resource pool,a sum of the first number and the second number; a creating moduleconfigured to create a new group based on at least a portion of thesecond number of storage devices according to a determination that thesum of the first number and the second number does not satisfy the groupthreshold range; an adding module configured to add another portion ofthe second number of storage devices to the existing group; and anallocating module configured to allocate a first portion of storagespace in each of a set of shared storage devices selected from theexisting group to the existing group, and a second portion of storagespace in each of the set of shared storage devices to the new group.According to an example implementation of the present disclosure, thisapparatus further includes modules for performing other steps in themethod described above.

FIG. 9 schematically illustrates a block diagram of device 900 formanaging a resource pool of a storage system according to an exampleimplementation of the present disclosure. As shown in the figure, device900 includes central processing unit (CPU) 901 that may perform variousappropriate actions and processing according to computer programinstructions stored in read-only memory (ROM) 902 or computer programinstructions loaded from storage unit 908 into random access memory(RAM) 903. Various programs and data required by the operation of device900 may also be stored in RAM 903. CPU 901, ROM 902, and RAM 903 areconnected to one another through bus 904. Input/output (I/O) interface905 is also connected to bus 904.

Multiple components in device 900 are connected to I/O interface 905,including: input unit 906, such as a keyboard and a mouse; output unit907, such as various types of displays and speakers; storage unit 908,such as a magnetic disk and an optical disk; and communication unit 909,such as a network card, a modem, and a wireless communicationtransceiver. Communication unit 909 allows device 900 to exchangeinformation/data with other devices through a computer network such asthe Internet and/or various telecommunication networks.

The various processes and processing described above, such as method300, may be performed by processing unit 901. For example, in someimplementations, method 300 may be implemented as a computer softwareprogram that is tangibly included in a machine-readable medium, such asstorage unit 908. In some implementations, some or all of the computerprogram may be loaded and/or installed onto device 900 via ROM 902and/or communication unit 909. One or more steps of method 300 describedabove may be performed when the computer program is loaded into RAM 903and executed by CPU 901. Alternatively, in other implementations, CPU901 may also be configured in any other suitable manner to implement theabove processes/methods.

According to an example implementation of the present disclosure, anelectronic device is provided, including: at least one processor; and amemory coupled to the at least one processor, wherein the memory hasinstructions stored therein which, when executed by the at least oneprocessor, cause the device to perform a method for managing a resourcepool. The resource pool includes multiple storage devices which aredivided into at least one group with a first number of storage devicesin an existing group of the at least one group not higher than an upperlimit threshold of a group threshold range, and this method includes:determining, according to a determination that a second number ofstorage devices are added to the resource pool, a sum of the firstnumber and the second number; creating a new group based on at least aportion of the second number of storage devices according to adetermination that the sum of the first number and the second numberdoes not satisfy the group threshold range; adding another portion ofthe second number of storage devices to the existing group; andallocating a first portion of storage space in each of a set of sharedstorage devices selected from the existing group to the existing group,and a second portion of storage space in each of the set of sharedstorage devices to the new group.

According to an example implementation of the present disclosure,allocating the first portion of storage space to the existing groupincludes updating address mapping of the existing group based on thefirst portion of storage space; and allocating the second portion ofstorage space to the new group includes updating address mapping of thenew group based on the second portion of storage space.

According to an example implementation of the present disclosure, themethod further includes: selecting the set of shared storage devicesbased on the second number and the lower limit threshold.

According to an example implementation of the present disclosure,selecting the set of shared storage devices includes: selecting the setof shared storage devices from the another portion of storage devicesadded to the existing group according to a determination that the secondnumber is not lower than a lower limit threshold of the group thresholdrange.

According to an example implementation of the present disclosure,selecting the set of shared storage devices includes: selecting the setof shared storage devices from the another portion of storage devicesadded to the existing group and the first number of storage devicesaccording to a determination that the second number is lower than alower limit threshold of the group threshold range.

According to an example implementation of the present disclosure,selecting the set of shared storage devices from the first number ofstorage devices includes: determining a target number of shared storagedevices in the set of shared storage devices that are from the firstnumber of storage devices based on the second number and the groupthreshold range; and selecting at least one storage device satisfyingthe target number from the first number of storage devices based on aworkload of each of the first number of storage devices.

According to an example implementation of the present disclosure,selecting the at least one storage device satisfying the target numberincludes: migrating data in the selected at least one storage device toanother storage device in the first number of storage devices accordingto a determination that idle storage space of the selected at least onestorage device is in a proportion less than a threshold proportion.

According to an example implementation of the present disclosure, themethod further includes: for a given shared storage device in the set ofshared storage devices, determining the second portion of storage spacefrom idle storage space of the given shared storage device; anddetermining the first portion of storage space from a storage spaceother than the second portion of storage space in the given sharedstorage device.

According to an example implementation of the present disclosure, themethod further includes: comparing, according to a determination that athird number of storage devices are added to the resource pool, thethird number with a difference between the upper limit threshold and thenumber of storage devices in the new group; adding the third number ofstorage devices to the new group according to a determination that thethird number is not higher than the difference; and migrating data in atleast a portion of shared storage devices in the set of shared storagedevices to the third number of storage devices according to adetermination that the set of shared storage devices is non-empty.

According to an example implementation of the present disclosure,migrating the data in the at least a portion of shared storage devicesto the third number of storage devices includes: selecting at least onestorage device from the third number of storage devices according to adetermination that the number of the set of shared storage devices isnot higher than the third number, wherein the number of the at least onestorage device is equal to the number of the set of shared storagedevices; and migrating data in the second portion of each of the set ofshared storage devices to the selected at least one storage device,respectively.

According to an example implementation of the present disclosure, themethod further includes: updating address mapping of the existing groupso that the existing group includes all storage space of each of the setof shared storage devices.

According to an example implementation of the present disclosure,migrating the data in the at least a portion of shared storage devicesto the third number of storage devices includes: selecting a subset ofshared storage devices from the set of shared storage devices accordingto a determination that the number of the set of shared storage devicesis higher than the third number, wherein the number of shared storagedevices in the selected subset is equal to the third number; migratingdata in a second portion of each shared storage device in the selectedsubset to the third number of storage devices; and removing the sharedstorage devices in the subset from the set of shared storage devices.

According to an example implementation of the present disclosure, themethod further includes: updating address mapping of the existing groupso that the existing group includes all storage space of each sharedstorage device in the subset.

According to an example implementation of the present disclosure,selecting the subset from the set of shared storage devices includes:selecting the subset from the set of shared storage devices according toa workload of each of the set of shared storage devices.

According to an example implementation of the present disclosure, themethod further includes: comparing, according to a determination that athird number of storage devices are added to the resource pool, thethird number with a difference between the upper limit threshold and thenumber of storage devices in the new group; and adding a portion of thethird number of storage devices to the new group based on the upperlimit threshold according to a determination that the third number ishigher than the difference.

According to an example implementation of the present disclosure, themethod further includes: performing load balancing for data in storagedevices in either of the existing group and the new group.

According to an example implementation of the present disclosure, theupper limit threshold and the lower limit threshold of the groupthreshold range respectively define an upper limit and a lower limit ofthe number of storage devices in each group of the at least one group,and the lower limit threshold is determined based on a stripe width ofthe storage system and the number of backup storage devices.

According to an example implementation of the present disclosure, thenumber of storage devices in each group other than the existing group ofthe at least one group is equal to the upper limit threshold,respectively.

According to an example implementation of the present disclosure, acomputer program product is provided, which is tangibly stored on anon-transitory computer-readable medium and includes machine-executableinstructions, wherein the machine-executable instructions are used forperforming the method according to the present disclosure.

According to an example implementation of the present disclosure, acomputer-readable medium is provided. The computer-readable mediumstores machine-executable instructions which, when executed by at leastone processor, cause the at least one processor to implement the methodaccording to the present disclosure.

The present disclosure may be a method, a device, a system, and/or acomputer program product. The computer program product may include acomputer-readable storage medium, on which computer-readable programinstructions used for executing various aspects of the presentdisclosure are loaded.

The computer-readable storage medium may be a tangible device that canhold and store instructions used by an instruction execution device. Forexample, the computer-readable storage medium may be, but is not limitedto, an electric storage device, a magnetic storage device, an opticalstorage device, an electromagnetic storage device, a semiconductorstorage device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of computer-readable storagemedia include: a portable computer disk, a hard disk, a random accessmemory (RAM), a read-only memory (ROM), an erasable programmableread-only memory (EPROM or a flash memory), a static random accessmemory (SRAM), a portable compact disc read-only memory (CD-ROM), adigital versatile disc (DVD), a memory stick, a floppy disk, amechanical encoding device (for example, a punch card or a raisedstructure in a groove with instructions stored thereon), and anysuitable combination of the foregoing. The computer-readable storagemedium used herein is not to be interpreted as transient signals per se,such as radio waves or other freely propagating electromagnetic waves,electromagnetic waves propagated through waveguides or othertransmission media (e.g., light pulses through fiber-optic cables), orelectrical signals transmitted through electrical wires.

The computer-readable program instructions described herein may bedownloaded from a computer-readable storage medium to variouscomputing/processing devices or downloaded to an external computer orexternal storage device via a network, such as the Internet, a localarea network, a wide area network, and/or a wireless network. Thenetwork may include copper transmission cables, fiber optictransmission, wireless transmission, routers, firewalls, switches,gateway computers, and/or edge servers. The computer-readable programinstructions are received by a network adapter card or network interfaceof each computing/processing device from the network, and are forwardedthereby to be stored in the computer-readable storage medium of eachcomputing/processing device.

Computer program instructions for performing the operations of thepresent disclosure may be assembly instructions, instruction setarchitecture (ISA) instructions, machine instructions, machine-relatedinstructions, microcode, firmware instructions, state setting data, orsource code or object code written in any combination of one or moreprogramming languages, wherein the programming languages includeobject-oriented programming languages, such as Smalltalk and C ++, andconventional procedural programming languages, such as the “C” languageor similar programming languages. The computer-readable programinstructions may be completely executed on a user's computer, partiallyexecuted on a user's computer, executed as an independent softwarepackage, partially executed on a user's computer and partially executedon a remote computer, or completely executed on a remote computer or aserver. In cases where a remote computer is involved, the remotecomputer may be connected to a user's computer over any kind ofnetworks, including a local area network (LAN) or a wide area network(WAN), or may be connected to an external computer (e.g., over theInternet by using an Internet service provider). In someimplementations, an electronic circuit, for example, a programmablelogic circuit, a field programmable gate array (FPGA), or a programmablelogic array (PLA), is personalized by utilizing state information ofcomputer-readable program instructions, and the electronic circuit mayexecute the computer-readable program instructions so as to implementvarious aspects of the present disclosure.

Various aspects of the present disclosure are described herein withreference to flow charts and/or block diagrams of the method, theapparatus (system), and the computer program product according toimplementations of the present disclosure. It should be understood thateach block of the flow chart and/or block diagrams and combinations ofblocks in the flow charts and/or block diagrams may be implemented bythe computer-readable program instructions. These computer-readableprogram instructions may be provided to a processing unit of ageneral-purpose computer, a special-purpose computer, or a furtherprogrammable data processing apparatus, thereby producing a machine,such that these instructions, when executed by the processing unit ofthe computer or the further programmable data processing apparatus,produce means (e.g., specialized circuitry) for implementing thefunctions/actions specified in one or more blocks in the flow chartsand/or block diagrams. The computer-readable program instructions mayalso be stored in the computer-readable storage medium, and theinstructions cause a computer, a programmable data processing apparatus,and/or other devices to work in a specific manner, such that thecomputer-readable medium having instructions stored includes an articleof manufacture that includes instructions for implementing variousaspects of the functions/actions specified in one or more blocks in theflow charts and/or block diagrams.

The computer-readable program instructions may also be loaded ontocomputers, other programmable data processing apparatuses, or otherdevices, so that a series of operating steps may be executed on thecomputers, other programmable data processing apparatuses, or otherdevices to produce a computer-implemented process. Therefore, theinstructions executed on the computer, other programmable dataprocessing apparatuses, or other devices implement the functions/actionsspecified in one or more blocks in the flow charts and/or blockdiagrams.

The flow charts and block diagrams in the accompanying drawings show thearchitectures, functions, and operations of possible implementations ofsystems, methods, and computer program products according to multipleimplementations of the present disclosure. In this regard, each block inthe flow charts or block diagrams may represent a module, a programsegment, or part of an instruction, the module, program segment, or partof an instruction including one or more executable instructions forimplementing specified logical functions. In some alternativeimplementations, the functions marked in the blocks may also occur in anorder different from that marked in the accompanying drawings. Forexample, two successive blocks may actually be executed in parallelsubstantially, or they may be executed in an opposite order sometimes,depending on the functions involved. It should also be noted that eachblock in the block diagrams and/or flow charts and a combination ofblocks in the block diagrams and/or flow charts may be implemented by adedicated hardware-based system for executing specified functions oractions, or may be implemented by a combination of dedicated hardwareand computer instructions.

Various implementations of the present disclosure have been describedabove. The above description is illustrative and not exhaustive, and isnot limited to the various implementations disclosed. Many modificationsand variations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the illustrated variousimplementations. The selection of terms as used herein is intended tobest explain principles and practical applications of the variousimplementations or improvements to technologies on the market, or toenable other persons of ordinary skill in the art to understand theimplementations disclosed here.

1. A method for managing a resource pool of a storage system, theresource pool including multiple storage devices which are divided intoat least one group with a first number of storage devices in an existinggroup of the at least one group not higher than an upper limit thresholdof a group threshold range, wherein the method includes: determining,according to a determination that a second number of storage devices areadded to the resource pool, a sum of the first number and the secondnumber; creating a new group based on at least a portion of the secondnumber of storage devices according to a determination that the sum ofthe first number and the second number does not satisfy the groupthreshold range; adding another portion of the second number of storagedevices to the existing group; and allocating a first portion of storagespace in each of a set of shared storage devices selected from theexisting group to the existing group, and a second portion of storagespace in each of the set of shared storage devices to the new group. 2.The method according to claim 1, wherein allocating the first portion ofstorage space to the existing group includes: updating address mappingof the existing group based on the first portion of storage space; andallocating the second portion of storage space to the new groupincludes: updating address mapping of the new group based on the secondportion of storage space.
 3. The method according to claim 1, furtherincluding: selecting the set of shared storage devices based on thesecond number and the lower limit threshold.
 4. The method according toclaim 3, wherein selecting the set of shared storage devices includes:selecting, according to a determination that the second number is notlower than a lower limit threshold of the group threshold range, the setof shared storage devices from the another portion of storage devicesadded to the existing group.
 5. The method according to claim 3, whereinselecting the set of shared storage devices includes: selecting,according to a determination that the second number is lower than alower limit threshold of the group threshold range, the set of sharedstorage devices from the another portion of storage devices added to theexisting group and the first number of storage devices.
 6. The methodaccording to claim 5, wherein selecting the set of shared storagedevices from the first number of storage devices includes: determining,based on the second number and the group threshold range, a targetnumber of shared storage devices in the set of shared storage devicesand from the first number of storage devices; and selecting, based on aworkload of each of the first number of storage devices, at least onestorage device satisfying the target number from the first number ofstorage devices.
 7. The method according to claim 6, wherein selectingthe at least one storage device satisfying the target number includes:migrating data in the selected at least one storage device to anotherstorage device in the first number of storage devices according to adetermination that idle storage space of the selected at least onestorage device is in a proportion less than a threshold proportion. 8.The method according to claim 7, further including: for a given sharedstorage device in the set of shared storage devices, determining thesecond portion of storage space from idle storage space of the givenshared storage device; and determining the first portion of storagespace from a storage space other than the second portion of storagespace in the given shared storage device.
 9. The method according toclaim 1, further including: comparing, according to a determination thata third number of storage devices are added to the resource pool, thethird number with a difference between the upper limit threshold and thenumber of storage devices in the new group; adding the third number ofstorage devices to the new group according to a determination that thethird number is not higher than the difference; and migrating data in atleast a portion of shared storage devices in the set of shared storagedevices to the third number of storage devices according to adetermination that the set of shared storage devices is non-empty. 10.The method according to claim 9, wherein migrating the data in the atleast a portion of shared storage devices to the third number of storagedevices includes: selecting at least one storage device from the thirdnumber of storage devices according to a determination that the numberof the set of shared storage devices is not higher than the thirdnumber, wherein the number of the at least one storage device is equalto the number of the set of shared storage devices; and migrating datain the second portion of each of the set of shared storage devices tothe selected at least one storage device, respectively.
 11. The methodaccording to claim 10, further including: updating address mapping ofthe existing group so that the existing group includes all storage spaceof each of the set of shared storage devices.
 12. The method accordingto claim 9, wherein migrating the data in the at least a portion ofshared storage devices to the third number of storage devices includes:selecting a subset of shared storage devices from the set of sharedstorage devices according to a determination that the number of the setof shared storage devices is higher than the third number, wherein thenumber of shared storage devices in the selected subset is equal to thethird number; migrating data in a second portion of each shared storagedevice in the selected subset to the third number of storage devices;and removing the shared storage devices in the subset from the set ofshared storage devices.
 13. The method according to claim 12, furtherincluding: updating address mapping of the existing group so that theexisting group includes all storage space of each shared storage devicein the subset.
 14. The method according to claim 9, wherein selectingthe subset from the set of shared storage devices includes: selectingthe subset from the set of shared storage devices according to aworkload of each of the set of shared storage devices.
 15. The methodaccording to claim 1, further including: comparing, according to adetermination that a third number of storage devices are added to theresource pool, the third number with a difference between the upperlimit threshold and the number of storage devices in the new group; andadding a portion of the third number of storage devices to the new groupbased on the upper limit threshold and according to a determination thatthe third number is higher than the difference.
 16. The method accordingto claim 1, further including: performing load balancing for data instorage devices in either of the existing group and the new group. 17.The method according to claim 1, wherein the upper limit threshold and alower limit threshold of the group threshold range respectively definean upper limit and a lower limit of the number of storage devices ineach group of the at least one group, and the lower limit threshold isdetermined based on a stripe width of the storage system and the numberof backup storage devices.
 18. The method according to claim 17, whereinthe number of storage devices in each group other than the existinggroup of the at least one group is equal to the upper limit threshold,respectively.
 19. An electronic device, the device including: at leastone processor; and a memory coupled to the at least one processor,wherein the memory has instructions stored therein which, when executedby the at least one processor, cause the device to perform a method formanaging a resource pool of a storage system, the resource poolincluding multiple storage devices which are divided into at least onegroup with a first number of storage devices in an existing group of theat least one group not higher than an upper limit threshold of a groupthreshold range, wherein the method includes: determining, according toa determination that a second number of storage devices are added to theresource pool, a sum of the first number and the second number; creatinga new group based on at least a portion of the second number of storagedevices according to a determination that the sum of the first numberand the second number does not satisfy the group threshold range; addinganother portion of the second number of storage devices to the existinggroup; and allocating a first portion of storage space in each of a setof shared storage devices selected from the existing group to theexisting group, and a second portion of storage space in each of the setof shared storage devices to the new group.
 20. A computer programproduct having a non-transitory computer readable medium which stores aset of instructions to manage a resource pool of a storage system, theresource pool including multiple storage devices which are divided intoat least one group with a first number of storage devices in an existinggroup of the at least one group not higher than an upper limit thresholdof a group threshold range; the set of instructions, when carried out bycomputerized circuitry, causing the computerized circuitry to perform amethod of: determining, according to a determination that a secondnumber of storage devices are added to the resource pool, a sum of thefirst number and the second number; creating a new group based on atleast a portion of the second number of storage devices according to adetermination that the sum of the first number and the second numberdoes not satisfy the group threshold range; adding another portion ofthe second number of storage devices to the existing group; andallocating a first portion of storage space in each of a set of sharedstorage devices selected from the existing group to the existing group,and a second portion of storage space in each of the set of sharedstorage devices to the new group.